#pragma once

#include <string>
#include <vector>

namespace kryptos { namespace cryptography {

class Encoder
{
public:

    Encoder(){}
    virtual ~Encoder(){}

    void setComments(std::string comments) { m_comments = comments;}
    void setVersion (std::string version)  { m_version = version;}
    void setLabel   (std::string label)    { m_label = label;}

    virtual std::string encode(std::vector<unsigned char> &buffer, bool includeHeaderInfo=true) = 0;

protected:

    std::string m_comments, m_version, m_label;
};

}}
